import axios from 'axios';
import { red } from 'kolorist';
import { IMessage } from 'qq-guild-bot';

export const rule = {
  一言: {
    reg: '^/一言$', //匹配消息正则，命令正则
    priority: 5000, //优先级，越小优先度越高
    describe: '一言' //【命令】功能说明
  }
};

export async function 一言(e: { msg: IMessage; eventType: string }) {
  let url = 'https://v1.hitokoto.cn/';
  /** 调用接口获取数据 */
  let res = await axios.get(url).catch(err => err);

  /** 判断接口是否请求成功 */
  let message = {};
  if (!res) {
    console.error(red('[一言] 接口请求失败'));

    message = {
      content: '一言接口请求失败',
      msg_id: e.msg.id // 可选，消息id，如果指定则会回复该消息
    };
  } else {
    /** 接口结果，json字符串转对象 */
    res = res.data;

    /** 输入日志 */
    // console.info(`[接口结果] 一言：${res.hitokoto}`);
    message = {
      // @ts-ignore 防止ts报错
      content: res.hitokoto,
      msg_id: e.msg.id // 可选，消息id，如果指定则会回复该消息
    };
  }
  // 发送消息
  if (e.eventType === 'DIRECT_MESSAGE_CREATE') {
    const { data } = await client.directMessageApi.postDirectMessage(e.msg.guild_id, message);
    // console.info(data);
  } else {
    let { data } = await client.messageApi.postMessage(e.msg.channel_id, message);
    // console.info(data);
  }

  return true;
}
